import 'package:flutter/material.dart';
import 'package:flutter_form_builder/flutter_form_builder.dart';

/// 表单字段类型
///
/// - input      文本输入
/// - toggle     开关
/// - radio      单选
/// - picker     多列选择器（不联动）
enum FormFieldType { input, toggle, radio, picker }

/// 简单的选项定义
class OptionItem {
  final String label;
  final String value;

  const OptionItem({required this.label, required this.value});
}

/// 表单字段配置
class FormModal {
  /// 字段显示名称
  final String label;

  /// 字段 key
  final String field;

  /// 是否必填
  final bool? require;

  /// 提示文字
  final String? placeholder;

  /// 字段类型
  final FormFieldType type;

  /// 默认值（类型根据具体字段不同）
  final dynamic defaultValue;

  /// 自定义校验（value 类型根据字段类型变化）
  ///
  /// - input/picker/radio: 可能为 String / `List<String>`
  /// - toggle: bool
  final String? Function(dynamic value)? validator;

  /// 自定义内容，优先级最高
  ///
  /// - 参数为当前字段的 GlobalKey
  final Widget Function(GlobalKey<FormBuilderFieldState>)? slot;

  /// 自定义行容器（包裹左侧 label 和右侧字段组件）
  ///
  /// - 第一个参数：左侧 label widget（通常是 Text）
  /// - 第二个参数：右侧字段 widget（通常已包含 Expanded）
  /// - 返回值：完整的一行容器（包括 padding / 背景 / 圆角等）
  final Widget Function(Widget label, Widget field)? containerBuilder;

  /// 选项数据
  final dynamic options;

  const FormModal({
    required this.label,
    required this.field,
    required this.type,
    this.require = false,
    this.placeholder,
    this.validator,
    this.slot,
    this.containerBuilder,
    this.options,
    this.defaultValue,
  });
}
